/** 
 * 平台数据接口。
 * 由于每款游戏通常需要发布到多个平台上，所以提取出一个统一的接口用于开发者获取平台数据信息
 * 推荐开发者通过这种方式封装平台逻辑，以保证整体结构的稳定
 * 由于不同平台的接口形式各有不同，白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式
 */
declare interface Platform {
    url_api;
    token;
    userinfo;
    up_id;
    stype;
    getCode(callback: Function)
    initShare();
    showloading(s: string)
    hideloading()
    headButton(): Promise<any>;
    setButton(callback): Promise<any>;
    wxshare(type: number, callback: Function);
    skipExchange(i: number);
}

class DebugPlatform implements Platform {
    url_api = "api/";
    token = "xxx";
    userinfo;
    up_id = 0;
    stype = 0;

    /**
     * 获取code
     */
    getCode(callback: Function) {
        callback && callback("xxx");
    }

    /**
     * 初始化分享
     */
    initShare(){}


    /**
     * 显示登陆loading
     */
    showloading(s: string) { }

    /**
     * 隐藏登陆loading
     */
    hideloading() { }


    /**
     * 分享
     * 
     * @param type
     *          1、每日礼包
     *          2、开垦土地
     *          3、施肥分享
     *          4、菜单里的分享
     *          5、萝卜
     */
    wxshare(type: number, callback: Function) {
        console.log("< PLATFORM >  wxshare")
        callback && callback(true);
    }



    /**
     * 跳转商城
     * 
     * @param i 类型
     *          1、果树兑换 /pages/shop/tree-exchange
     *          2、水果兑换 /pages/shop/exchange
     *          3、水果寄售 /pages/shop/sale
     *          4、提现 /pages/mine/tixian
     *          5、购买 /pages/mine/tixian
     */
    skipExchange(i: number) {
        switch (i) {
            case 1:
                console.log("< PLATFORM >  果树兑换 /pages/shop/tree-exchange")
                break;
            case 2:
                console.log("< PLATFORM >  水果兑换 /pages/shop/exchange")
                break;
            case 3:
                console.log("< PLATFORM >  水果寄售 /pages/shop/sale")
                break;
            case 4:
                console.log("< PLATFORM >  提现 /pages/mine/tixian")
                break;
            case 5:
                console.log("< PLATFORM >  购买 /pages/song/song")
                break;
        }
    }


    /**
     * 添加授权用的按钮
     */
    async setButton(callback) {
        console.log("setButton")
        callback("aaa", { "a": "a" });
    }
    async headButton() {
        console.log("headButton");
    }
}


if (!window.platform) {
    window.platform = new DebugPlatform();
}



declare let platform: Platform;

declare interface Window {

    platform: Platform
}





